package cn.dong.edu.service;

import cn.dong.base.dto.CourseDto;
import cn.dong.edu.domain.Course;
import cn.dong.edu.domain.dto.CourseInfo;
import cn.dong.edu.domain.dto.CourseVo;
import cn.dong.edu.domain.dto.WebCourseVo;
import cn.dong.edu.domain.query.QueryCourse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author You-Dong
 * @since 2021-02-06
 */
public interface CourseService extends IService<Course> {

    /**
     * 发布课程
     * @param info
     * @return
     */
    String createCourse(CourseInfo info);

    /**
     * 修改课程
     * @param info
     * @return
     */
    String updateCourse(CourseInfo info);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    CourseInfo findById(String id);

    /**
     * 提交审显示的确认信息，详细信息
     * @param courseId
     * @return
     */
    CourseVo findDetailedInfoById(String courseId);

    /**
     * 分页条件查询
     * @param current
     * @param size
     * @param queryTeacher
     * @return
     */
    IPage<Course> findByCondition(Integer current, Integer size, QueryCourse queryTeacher);

    /**
     * 删除课程
     * @param id
     * @return
     */
    boolean deleteCourse(String id);


    /**
     * 根据条件查询课程，前台
     * @param webCourseVo
     * @return
     */
    IPage<Course> findByCondition(Integer current, Integer size, WebCourseVo webCourseVo);

    /**
     * 根据id，查询详细信息
     * @param id
     * @return
     */
    Map<String, Object> findDetailedInfo(String id);

    /**
     * 查询前八热门课程
     * @return
     */
    List<Course> getHotCourse();

    /**
     * 获取dto对象，用于订单服务调用
     * @param id
     * @return
     */
    CourseDto getCourseDto(String id);

    /**
     * 增加销售数量
     * @param id
     */
    void updateBuyCount(String id);

    /**
     * 获取今天的课程上线数量
     * @param day
     * @return
     */
    Integer getCourseOnlineByDay(String day);
}
